import { autoUpdater } from 'electron-updater'
import { dialog } from 'electron'
import { sleep } from './utils'

// @ts-ignore
let mainWin: any = null
autoUpdater.autoDownload = false // 自动下载
autoUpdater.autoInstallOnAppQuit = false // 应用退出后自动安装

const checkUpdate = async () => {
  // 3秒后再进行
  await sleep(3000)
  // 设置更新源
  // autoUpdater.setFeedURL('')
  autoUpdater.checkForUpdates()

  autoUpdater.on('update-available', (info) => {
    console.log('有新版本需要更新', info)
    dialog.showMessageBox({
      type: 'warning',
      title: '更新提示',
      message: '有新版本发布了，是否下载更新？',
      buttons: ['更新', '取消'],
      cancelId: 1
    }).then(res => {
      if (res.response == 0) {
        // 开始下载更新
        autoUpdater.downloadUpdate()
      }
    })
  })
  autoUpdater.on('update-not-available', (info) => {
    console.log('无需更新', info)
  })

  autoUpdater.on('update-downloaded', (info) => {
    console.log('下载完毕，退出并安装', info)
    autoUpdater.quitAndInstall()
  })
  autoUpdater.on('error', (info) => {
    console.log('更新发生错误', info)
    dialog.showMessageBox({
      title: '检测更新发生错误',
      message: JSON.stringify(info),
      buttons: ['OK']
    })
  })
  autoUpdater.on('download-progress', (process) => {
    console.log(`更新进度, ${JSON.stringify(process)}`)
  })

  // 检测是否有更新包并通知
  // autoUpdater.checkForUpdatesAndNotify().catch()
  // 监听渲染进程的 install 事件，触发退出应用并安装
  // ipcMain.handle('install', () => autoUpdater.quitAndInstall())
}

export default checkUpdate
